/**
 * 核心技术支持
 * IT渠道网 小程序商城
 * 13873174181 微信同号
 */
import {Base} from '../../utils/base.js'

class Order extends Base {
    constructor(){
        super();
        this._storageKeyName = 'newOrder';  //新订单为ture
    }
    /*
     * 创建订单
     */
    doOrder(param, callback) {
        var that = this;
        var allParams = {
            url: 'min/order/add',
            type: 'post',
            data: param,
            sCallback: function (data) {
                that.execSetStorageSync(true);
                callback && callback(data);
            }
        }
        this.request(allParams);
    }
    /*
     * 拉起微信支付 订单id
     * callback:
     *   0 商品缺货等原因导致订单不能支付
     *   1 支付失败或支付取消
     *   2 支付成功
     */
    execPay(id, state, callback) {
        // 判断实时订单或再支付订单
        var param;
        if (state) {
            param = {tradeNo: id}
        } else {
            param = {orderNo: id}
        }
        var allParams = {
            url: 'min/pay/create',
            type: 'post',
            data: param,
            sCallback: function(data){
                // 可支付 成功会返回时间戳
                if (data.timeStamp) {
                    wx.requestPayment({
                        'timeStamp': data.timeStamp.toString(),
                        'nonceStr': data.nonceStr,
                        'package': data.package,
                        'signType': data.signType,
                        'paySign': data.paySign,
                        success: function(){
                            callback && callback(2); // 成功生成图 支付成功2
                        },
                        fail: function(){
                            callback && callback(1); // 生成失败,或×掉图片 支付失败1
                        }
                    })
                }else{
                    callback && callback(0); // 不能支付(商品缺货) 支付失败0
                }
            }
        }
        this.request(allParams);
    }
    /*
     * 获得订单详情
     */
    getOrderInfoById(id,callback) {
        var that = this;
        var allParams = {
            url: 'order/'+id,
            sCallback: function (data) {
                callback &&callback(data);
            },
            eCallback:function(){
            }
        };
        this.request(allParams);
    }
    /*
     * 本地缓存 保存／更新
     */
    execSetStorageSync(data) {
        wx.setStorageSync(this._storageKeyName,data);
    };
    /*
     * 是否有新订单
     */
    hasNewOrder() {
       var flag = wx.getStorageSync(this._storageKeyName);
       return flag == true;
    }
    /*
     * 获得所有订单 param{pageIndex:1, state:0}
     */
    getOrders(param, callback) {
        var allParams = {
            url: 'min/user/order',
            data: param,
            type: 'post',
            sCallback: function (data) {
               callback && callback(data); // 1未支付 2已支付 3已发货 4已支付,但库存不足
            }
        }
        this.request(allParams);
    }
}

export {Order};